diff --git a/library/NGNPro/Records/EnumMappings.php b/library/NGNPro/Records/EnumMappings.php index 265a6a4..4bca3e3 100644 --- a/library/NGNPro/Records/EnumMappings.php +++ b/library/NGNPro/Records/EnumMappings.php @@ -1,1359 +1,1382 @@ 'Change date', - 'number' => 'Number', - 'tld' => 'TLD' - ); - - var $ranges=array(); - - var $FieldsReadOnly=array( - 'customer', - 'reseller' - ); - var $Fields=array( - 'owner' => array('type'=>'integer'), - 'info' => array('type'=>'string') - ); - - var $mapping_fields=array('id' => 'integer', - 'type' => 'string', - 'mapto' => 'string', - 'priority' => 'integer', - 'ttl' => 'integer' - ); - - var $NAPTR_services=array( - "sip" => array("service"=>"sip", - "webname"=>"SIP", - "schemas"=>array("sip:","sips:")), - "mailto" => array("service"=>"mailto", - "webname"=>"Email", - "schemas"=>array("mailto:")), - "web:http" => array("service"=>"web:http", - "webname"=>"WEB (http)", - "schemas"=>array("http://")), - "web:https" => array("service"=>"web:https", - "webname"=>"WEB (https)", - "schemas"=>array("https://")), - "x-skype:callto" => array("service"=>"x-skype:callto", - "webname"=>"Skype", - "schemas"=>array("callto:")), - "h323" => array("service"=>"h323", - "webname"=>"H323", - "schemas"=>array("h323:")), - "iax" => array("service"=>"iax", - "webname"=>"IAX", - "schemas"=>array("iax:")), - "iax2" => array("service"=>"iax2", - "webname"=>"IAX2", - "schemas"=>array("iax2:")), - "mms" => array("service"=>"mms", - "webname"=>"MMS", - "schemas"=>array("tel:","mailto:")), - "sms" => array("service"=>"sms", - "webname"=>"SMS", - "schemas"=>array("tel:","mailto:")), - "ems" => array("service"=>"ems", - "webname"=>"EMS", - "schemas"=>array("tel:","mailto:")), - "im" => array("service"=>"im", - "webname"=>"IM", - "schemas"=>array("im:")), - "npd:tel" => array("service"=>"npd+tel", - "webname"=>"Portability", - "schemas"=>array("tel:")), - "void:mailto" => array("service"=>"void:mailto", - "webname"=>"VOID(mail)", - "schemas"=>array("mailto:")), - "void:http" => array("service"=>"void:http", - "webname"=>"VOID(http)", - "schemas"=>array("http://")), - "void:https" => array("service"=>"void:https", - "webname"=>"VOID(https)", - "schemas"=>array("https://")), - "voice" => array("service"=>"voice", - "webname"=>"Voice", - "schemas"=>array("voice:","tel:")), - "tel" => array("service"=>"tel", - "webname"=>"Tel", - "schemas"=>array("tel:")), - "fax:tel" => array("service"=>"fax:tel", - "webname"=>"Fax", - "schemas"=>array("tel:")), - "ifax:mailto" => array("service"=>"ifax:mailto", - "webname"=>"iFax", - "schemas"=>array("mailto:")), - "pres" => array("service"=>"pres", - "webname"=>"Presence", - "schemas"=>array("pres:")), - "ft:ftp" => array("service"=>"ft:ftp", - "webname"=>"FTP", - "schemas"=>array("ftp://")), - "loc:http" => array("service"=>"loc:http", - "webname"=>"GeoLocation", - "schemas"=>array("http://")), - "key:http" => array("service"=>"key:http", - "webname"=>"Public key", - "schemas"=>array("http://")), - "key:https" => array("service"=>"key:https", - "webname"=>"Public key (HTTPS)", - "schemas"=>array("https://")) - ); + var $sortElements = array( + 'changeDate' => 'Change date', + 'number' => 'Number', + 'tld' => 'TLD' + ); + + var $ranges = array(); + + var $FieldsReadOnly = array( + 'customer', + 'reseller' + ); + var $Fields = array( + 'owner' => array('type'=>'integer'), + 'info' => array('type'=>'string') + ); + + var $mapping_fields = array( + 'id' => 'integer', + 'type' => 'string', + 'mapto' => 'string', + 'priority' => 'integer', + 'ttl' => 'integer' + ); + + var $NAPTR_services = array( + "sip" => array( + "service" => "sip", + "webname" => "SIP", + "schemas" => array("sip:","sips:")), + "mailto" => array( + "service" => "mailto", + "webname" => "Email", + "schemas" => array("mailto:")), + "web:http" => array( + "service" => "web:http", + "webname" => "WEB (http)", + "schemas" => array("http://")), + "web:https" => array( + "service" => "web:https", + "webname" => "WEB (https)", + "schemas" => array("https://")), + "x-skype:callto" => array( + "service" => "x-skype:callto", + "webname" => "Skype", + "schemas" => array("callto:")), + "h323" => array( + "service" => "h323", + "webname" => "H323", + "schemas" => array("h323:")), + "iax" => array( + "service" => "iax", + "webname" => "IAX", + "schemas" => array("iax:")), + "iax2" => array( + "service" => "iax2", + "webname" => "IAX2", + "schemas" => array("iax2:")), + "mms" => array( + "service" => "mms", + "webname" => "MMS", + "schemas" => array("tel:","mailto:")), + "sms" => array( + "service" => "sms", + "webname" => "SMS", + "schemas" => array("tel:","mailto:")), + "ems" => array( + "service" => "ems", + "webname" => "EMS", + "schemas" => array("tel:","mailto:")), + "im" => array( + "service" => "im", + "webname" => "IM", + "schemas" => array("im:")), + "npd:tel" => array( + "service" => "npd+tel", + "webname" => "Portability", + "schemas" => array("tel:")), + "void:mailto" => array( + "service" => "void:mailto", + "webname" => "VOID(mail)", + "schemas" => array("mailto:")), + "void:http" => array( + "service" => "void:http", + "webname" => "VOID(http)", + "schemas" => array("http://")), + "void:https" => array( + "service" => "void:https", + "webname" => "VOID(https)", + "schemas" => array("https://")), + "voice" => array( + "service" => "voice", + "webname" => "Voice", + "schemas" => array("voice:","tel:")), + "tel" => array( + "service" => "tel", + "webname" => "Tel", + "schemas" => array("tel:")), + "fax:tel" => array( + "service" => "fax:tel", + "webname" => "Fax", + "schemas" => array("tel:")), + "ifax:mailto" => array( + "service" => "ifax:mailto", + "webname" => "iFax", + "schemas" => array("mailto:")), + "pres" => array( + "service" => "pres", + "webname" => "Presence", + "schemas" => array("pres:")), + "ft:ftp" => array( + "service" => "ft:ftp", + "webname" => "FTP", + "schemas" => array("ftp://")), + "loc:http" => array( + "service" => "loc:http", + "webname" => "GeoLocation", + "schemas" => array("http://")), + "key:http" => array( + "service" => "key:http", + "webname" => "Public key", + "schemas" => array("http://")), + "key:https" => array( + "service" => "key:https", + "webname" => "Public key (HTTPS)", + "schemas" => array("https://")) + ); public function __construct($SoapEngine) { dprint("init EnumMappings"); if ($_REQUEST['range_filter']) { - list($_prefix, $_tld_filter)= explode("@",$_REQUEST['range_filter']); + list($_prefix, $_tld_filter) = explode("@", $_REQUEST['range_filter']); if ($_prefix && !$_REQUEST['number_filter']) { - $_number_filter=$_prefix.'%'; + $_number_filter = $_prefix.'%'; } else { - $_number_filter=$_REQUEST['number_filter']; + $_number_filter = $_REQUEST['number_filter']; } } else { - $_number_filter=$_REQUEST['number_filter']; - $_tld_filter=trim($_REQUEST['tld_filter']); + $_number_filter = $_REQUEST['number_filter']; + $_tld_filter = trim($_REQUEST['tld_filter']); } - $_number_filter=ltrim($_number_filter,'+'); + $_number_filter = ltrim($_number_filter, '+'); - $this->filters = array('number' => ltrim($_number_filter,'+'), - 'tld' => $_tld_filter, - 'range' => trim($_REQUEST['range_filter']), - 'type' => trim($_REQUEST['type_filter']), - 'mapto' => trim($_REQUEST['mapto_filter']), - 'owner' => trim($_REQUEST['owner_filter']) + $this->filters = array( + 'number' => ltrim($_number_filter, '+'), + 'tld' => $_tld_filter, + 'range' => trim($_REQUEST['range_filter']), + 'type' => trim($_REQUEST['type_filter']), + 'mapto' => trim($_REQUEST['mapto_filter']), + 'owner' => trim($_REQUEST['owner_filter']) ); parent::__construct($SoapEngine); $this->getAllowedDomains(); } function listRecords() { $this->showSeachForm(); - $filter=array('number' => $this->filters['number'], - 'tld' => $this->filters['tld'], - 'type' => $this->filters['type'], - 'mapto' => $this->filters['mapto'], - 'owner' => intval($this->filters['owner']), - 'customer' => intval($this->filters['customer']), - 'reseller' => intval($this->filters['reseller']) - ); + $filter = array( + 'number' => $this->filters['number'], + 'tld' => $this->filters['tld'], + 'type' => $this->filters['type'], + 'mapto' => $this->filters['mapto'], + 'owner' => intval($this->filters['owner']), + 'customer' => intval($this->filters['customer']), + 'reseller' => intval($this->filters['reseller']) + ); + // Range - $range=array('start' => intval($this->next), + $range = array('start' => intval($this->next), 'count' => intval($this->maxrowsperpage) ); // Order if (!$this->sorting['sortBy']) $this->sorting['sortBy'] = 'changeDate'; if (!$this->sorting['sortOrder']) $this->sorting['sortOrder'] = 'DESC'; $orderBy = array('attribute' => $this->sorting['sortBy'], 'direction' => $this->sorting['sortOrder'] ); // Compose query - $Query=array('filter' => $filter, + $Query = array('filter' => $filter, 'orderBy' => $orderBy, 'range' => $range ); // Insert credetials $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('getNumbers'); // Call function $result = $this->SoapEngine->soapclient->getNumbers($Query); if ($this->checkLogSoapError($result, true)) { return false; } else { - $this->rows = $result->total; - if ($this->rows && $_REQUEST['action'] != 'PerformActions' && $_REQUEST['action'] != 'Delete') { + if ($this->rows && $_REQUEST['action'] != 'PerformActions' && $_REQUEST['action'] != 'Delete') { $this->showActionsForm(); } print "
$this->rows records found

"; if (!$this->next) $this->next=0; - if ($this->rows > $this->maxrowsperpage) { + if ($this->rows > $this->maxrowsperpage) { $maxrows = $this->maxrowsperpage + $this->next; if ($maxrows > $this->rows) $maxrows = $this->maxrowsperpage; } else { - $maxrows=$this->rows; + $maxrows = $this->rows; } $i=0; if ($this->rows) { - while ($i < $maxrows) { - + while ($i < $maxrows) { if (!$result->numbers[$i]) break; $number = $result->numbers[$i]; - $index=$this->next+$i+1; + $index = $this->next+$i+1; $j=1; $base_url_data = array( 'service' => $this->SoapEngine->service, 'number_filter' => $number->id->number, 'tld_filter' => $number->id->tld ); foreach ($number->mappings as $_mapping) { unset($sip_engine); foreach (array_keys($this->login_credentials['reseller_filters']) as $_res) { if ($_res == $number->reseller) { if ($this->login_credentials['reseller_filters'][$_res]['sip_engine']) { - $sip_engine=$this->login_credentials['reseller_filters'][$_res]['sip_engine']; + $sip_engine = $this->login_credentials['reseller_filters'][$_res]['sip_engine']; break; } } } if (!$sip_engine) { if ($this->login_credentials['reseller_filters']['default']['sip_engine']) { - $sip_engine=$this->login_credentials['reseller_filters']['default']['sip_engine']; + $sip_engine = $this->login_credentials['reseller_filters']['default']['sip_engine']; } else { - $sip_engine=$this->SoapEngine->sip_engine; + $sip_engine = $this->SoapEngine->sip_engine; } } if (preg_match("/^sip:(.*)$/", $_mapping->mapto, $m) && $this->sip_settings_page) { $mapto_url_data = array( 'account' => $m[1], 'reseller' => $number->reseller, 'sip_engine' => $sip_engine ); if ($this->adminonly) { $mapto_url_data['adminonly'] = $this->adminonly; } foreach (array_keys($this->SoapEngine->extraFormElements) as $element) { if (!strlen($this->SoapEngine->extraFormElements[$element])) continue; $mapto_url_data[$element] = $this->SoapEngine->extraFormElements[$element]; } $mapto = sprintf( " sip:%s", $this->sip_settings_page, http_build_query($mapto_url_data), $m[1] ); } else { - $mapto=sprintf("%s",$_mapping->mapto); + $mapto = sprintf("%s", $_mapping->mapto); } $delete_url_data = array_merge( $base_url_data, array( 'action' => 'Delete', 'mapto_filter' => $_mapping->mapto ) ); if ($_REQUEST['action'] == 'Delete' && $_REQUEST['number_filter'] == $number->id->number && $_REQUEST['tld_filter'] == $number->id->tld && $_REQUEST['mapto_filter'] == $_mapping->mapto ) { $delete_url_data['confirm'] = 1; $actionText = "Confirm"; } else { $actionText = "Delete"; } $_url = sprintf( "%s&%s", $this->url, http_build_query($delete_url_data) ); if ($j==1) { $number_url_data = $base_url_data; if ($this->adminonly) $_number_url_data['reseller_filter'] = $number->reseller; $_number_url = sprintf( "%s&%s", $this->url, http_build_query($number_url_data) ); $_customer_url = sprintf( 's&%s', $this->url, http_build_query( array( 'service' => sprintf('customers@%s', $this->SoapEngine->customer_engine), 'customer_filter' => $number->customer ) ) ); if ($number->owner) { $_owner_url = sprintf( '%s', $this->url, http_build_query( array( 'service' => sprintf('customers@%s', $this->SoapEngine->customer_engine), 'customer_filter' => $number->owner ) ), $number->owner ); } else { $_owner_url=''; } printf( " ", $index, $_customer_url, $number->customer, $number->reseller, $_number_url, $number->id->number, $number->id->tld, $number->info, $_owner_url, ucfirst($_mapping->type), $_mapping->id, $mapto, $_mapping->ttl, $number->changeDate, $_url, $actionText ); } else { printf( " ", ucfirst($_mapping->type), $_mapping->id, $mapto, $_mapping->ttl, $number->changeDate, $_url, $actionText ); } $j++; } if (!is_array($number->mappings) || !count($number->mappings)) { $delete_url_data = array_merge( $base_url_data, array( 'action' => 'Delete', 'mapto_filter' => $_mapping->mapto ) ); if ($_REQUEST['action'] == 'Delete' && $_REQUEST['number_filter'] == $number->id->number && $_REQUEST['tld_filter'] == $number->id->tld && $_REQUEST['mapto_filter'] == $_mapping->mapto ) { $delete_url_data['confirm'] = 1; $actionText = "Confirm"; } else { $actionText = "Delete"; } $_url = sprintf( "%s&%s", $this->url, http_build_query($delete_url_data) ); $number_url_data = $base_url_data; if ($this->adminonly) $_number_url_data['reseller_filter'] = $number->reseller; $_number_url = sprintf( "%s&%s", $this->url, http_build_query($number_url_data) ); $_customer_url = sprintf( 's&%s', $this->url, http_build_query( array( 'service' => sprintf('customers@%s', $this->SoapEngine->customer_engine), 'customer_filter' => $number->customer ) ) ); if ($number->owner) { $_owner_url = sprintf( '%s', $this->url, http_build_query( array( 'service' => sprintf('customers@%s', $this->SoapEngine->customer_engine), 'customer_filter' => $number->owner ) ), $number->owner ); } else { $_owner_url=''; } printf( " ", $index, $_customer_url, $number->customer, $number->reseller, $_number_url, $number->id->number, $number->id->tld, $number->info, $_owner_url, $number->changeDate, $_url, $actionText ); } printf(" "); $i++; } } print "
Range Owner Phone number TLD Info Owner Type Id Map to TTL Change date Actions
%s %s.%s +%s %s %s %s %s %s %s %s %s %s
%s %s %s %s %s %s
%s %s.%s +%s %s %s %s %s %s
"; - if ($this->rows == 1 ) { + if ($this->rows == 1) { $this->showRecord($number); } else { $this->showPagination($maxrows); } return true; } } - function getLastNumber() { - + function getLastNumber() + { // Filter - $filter=array('number' => '' + $filter = array('number' => '' ); // Range - $range=array('start' => 0, + $range = array('start' => 0, 'count' => 1 ); // Order if (!$this->sorting['sortBy']) $this->sorting['sortBy'] = 'changeDate'; if (!$this->sorting['sortOrder']) $this->sorting['sortOrder'] = 'DESC'; $orderBy = array('attribute' => $this->sorting['sortBy'], 'direction' => $this->sorting['sortOrder'] ); // Compose query - $Query=array('filter' => $filter, + $Query = array('filter' => $filter, 'orderBy' => $orderBy, 'range' => $range ); // Insert credetials $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('getNumbers'); // Call function $result = $this->SoapEngine->soapclient->getNumbers($Query); if ($this->checkLogSoapError($result, true)) { return false; } else { - if ($result->total) { $number = array('number' => $result->numbers[0]->id->number, 'tld' => $result->numbers[0]->id->tld, 'mappings' => $result->numbers[0]->mappings ); return $number; } } return false; } function showSeachFormCustom() { /* print " "; */ - printf ("

Number
",$_REQUEST['number_filter']); + printf("
Number
", $_REQUEST['number_filter']); - printf ("
Map to"); + printf("
Map to"); print " "; - printf ("
",$this->filters['mapto']); - printf ("
Owner
",$this->filters['owner']); + printf("
", $this->filters['mapto']); + printf("
Owner
", $this->filters['owner']); } - function deleteRecord($dictionary=array()) + function deleteRecord($dictionary = array()) { if (!$dictionary['confirm'] && !$_REQUEST['confirm']) { print "

Please press on Confirm to confirm the delete. "; return true; } if ($dictionary['number']) { - $number=$dictionary['number']; + $number = $dictionary['number']; } else { - $number=$this->filters['number']; + $number = $this->filters['number']; } if ($dictionary['tld']) { - $tld=$dictionary['tld']; + $tld = $dictionary['tld']; } else { - $tld=$this->filters['tld']; + $tld = $this->filters['tld']; } if ($dictionary['mapto']) { - $mapto=$dictionary['mapto']; + $mapto = $dictionary['mapto']; } else { - $mapto=$this->filters['mapto']; + $mapto = $this->filters['mapto']; } if (!strlen($number) || !strlen($tld)) { print "

Error: missing ENUM number or TLD "; return false; } - $enum_id=array('number' => $number, + $enum_id = array('number' => $number, 'tld' => $tld ); $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('getNumber'); $result = $this->SoapEngine->soapclient->getNumber($enum_id); if (!(new PEAR)->isError($result)) { // the number exists and we make an update - $result_new=$result; + $result_new = $result; if (count($result->mappings) > 1) { foreach ($result->mappings as $_mapping) { if ($_mapping->mapto != $mapto) { - $mappings_new[]=array('type' => $_mapping->type, + $mappings_new[] = array('type' => $_mapping->type, 'mapto' => $_mapping->mapto, 'ttl' => $_mapping->ttl, 'priority' => $_mapping->priority, 'id' => $_mapping->id ); } } if (!is_array($mappings_new)) $mappings_new = array(); - $result_new->mappings=$mappings_new; + $result_new->mappings = $mappings_new; - $function=array('commit' => array('name' => 'updateNumber', + $function = array('commit' => array('name' => 'updateNumber', 'parameters' => array($result_new), 'logs' => array('success' => sprintf('ENUM mapping %s has been deleted',$mapto))) ); - $result = $this->SoapEngine->execute($function,$this->html); + $result = $this->SoapEngine->execute($function, $this->html); if ($this->checkLogSoapError($result, true)) { return false; } else { return true; } - } else { - $function=array('commit' => array('name' => 'deleteNumber', + $function = array('commit' => array('name' => 'deleteNumber', 'parameters' => array($enum_id), - 'logs' => array('success' => sprintf('ENUM number +%s under %s has been deleted',$number,$tld))), + 'logs' => array('success' => sprintf('ENUM number +%s under %s has been deleted',$number, $tld))), ); - $result = $this->SoapEngine->execute($function,$this->html); + $result = $this->SoapEngine->execute($function, $this->html); if ($this->checkLogSoapError($result, true)) { return false; } else { return true; } } unset($this->filters); } else { return false; } } function showAddForm() { if ($this->selectionActive) return; //if ($this->adminonly && !$this->filters['reseller']) return; if (!count($this->ranges)) { //print "

You must create at least one ENUM range before adding ENUM numbers"; return false; } - printf ("

",$_SERVER['PHP_SELF']); + printf("", $_SERVER['PHP_SELF']); print "
"; if ($this->adminonly) { - printf (" ",$this->filters['reseller']); + printf(" ", $this->filters['reseller']); } print "
"; - printf (" Number"); + printf(" Number"); print ""; if ($_REQUEST['number']) { - printf ("",$_REQUEST['number']); - } else if ($_number=$this->getCustomerProperty('enum_numbers_last_number')) { - $_prefix=$_range['prefix']; - preg_match("/^$_prefix(.*)/",$_number,$m); - printf ("",$m[1]); + printf("", $_REQUEST['number']); + } elseif ($_number = $this->getCustomerProperty('enum_numbers_last_number')) { + $_prefix = $_range['prefix']; + preg_match("/^$_prefix(.*)/", $_number, $m); + printf("", $m[1]); } else { - printf (""); + printf(""); } print "
"; - printf ("Map to"); + printf("Map to"); print " "; if ($_REQUEST['type']) { $selected_naptr_service[$_REQUEST['type']]='selected'; - } else if ($_type=$this->getCustomerProperty('enum_numbers_last_type')) { + } elseif ($_type = $this->getCustomerProperty('enum_numbers_last_type')) { $selected_naptr_service[$_type]='selected'; } - printf (" ",$_REQUEST['mapto']); + printf(" ", $_REQUEST['mapto']); print "
"; print "TTL"; print ""; if ($_REQUEST['ttl']) { - printf ("
",$_REQUEST['ttl']); - } else if ($_ttl=$this->getCustomerProperty('enum_numbers_last_ttl')) { - printf ("
",$_ttl); + printf("", $_REQUEST['ttl']); + } elseif ($_ttl = $this->getCustomerProperty('enum_numbers_last_ttl')) { + printf("", $_ttl); } else { - printf (""); + printf(""); } - printf ("
Owner
",$_REQUEST['owner']); - printf ("
Info
",$_REQUEST['info']); + printf("
Owner
", $_REQUEST['owner']); + printf("
Info
", $_REQUEST['info']); $this->printHiddenFormElements(); print "
"; } function getAllowedDomains() { // Filter - $filter=array('prefix' => '', + $filter = array('prefix' => '', 'customer' => intval($this->filters['customer']), 'reseller' => intval($this->filters['reseller']) ); // Range - $range=array('start' => 0, + $range = array('start' => 0, 'count' => 200 ); // Order $orderBy = array('attribute' => 'prefix', 'direction' => 'ASC' ); // Compose query - $Query=array('filter' => $filter, + $Query = array('filter' => $filter, 'orderBy' => $orderBy, 'range' => $range ); $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('getRanges'); $result = $this->SoapEngine->soapclient->getRanges($Query); if ($this->checkLogSoapError($result, true)) { return false; } else { - foreach($result->ranges as $range) { - $this->ranges[]=array('prefix' => $range->id->prefix, + foreach ($result->ranges as $range) { + $this->ranges[] = array('prefix' => $range->id->prefix, 'tld' => $range->id->tld, 'minDigits' => $range->minDigits, 'maxDigits' => $range->maxDigits ); - if (in_array($range->id->tld,$this->allowedDomains)) continue; - $this->allowedDomains[]=$range->id->tld; + if (in_array($range->id->tld, $this->allowedDomains)) continue; + $this->allowedDomains[] = $range->id->tld; $seen[$range->id->tld]++; } if (!$seen[$this->SoapEngine->default_enum_tld]) { - $this->allowedDomains[]=$this->SoapEngine->default_enum_tld; + $this->allowedDomains[] = $this->SoapEngine->default_enum_tld; } } } - function addRecord($dictionary=array()) { + function addRecord($dictionary = array()) { $prefix=''; if ($dictionary['range']) { - list($prefix,$tld)=explode('@',trim($dictionary['range'])); - $this->skipSaveProperties=true; - } else if ($dictionary['tld']) { + list($prefix, $tld)=explode('@', trim($dictionary['range'])); + $this->skipSaveProperties = true; + } elseif ($dictionary['tld']) { $tld = $dictionary['tld']; - } else if ($_REQUEST['range']) { - list($prefix,$tld)=explode('@',trim($_REQUEST['range'])); + } elseif ($_REQUEST['range']) { + list($prefix, $tld)=explode('@', trim($_REQUEST['range'])); } else { $tld = trim($_REQUEST['tld']); } if ($dictionary['number']) { $number = $dictionary['number']; } else { $number = trim($_REQUEST['number']); } - $number=$prefix.$number; + $number = $prefix.$number; if (!strlen($tld)) { - $tld=$this->SoapEngine->default_enum_tld; + $tld = $this->SoapEngine->default_enum_tld; } if (!strlen($tld) || !strlen($number) || !is_numeric($number)) { - printf ("

Error: Missing TLD or number. "); + printf("

Error: Missing TLD or number. "); return false; } if ($dictionary['ttl']) { $ttl = intval($dictionary['ttl']); } else { $ttl = intval(trim($_REQUEST['ttl'])); } if (!$ttl) $ttl=3600; if ($dictionary['priority']) { $priority = intval($dictionary['priority']); } else { $priority = intval(trim($_REQUEST['priority'])); } if ($dictionary['owner']) { $owner = intval($dictionary['owner']); } else { $owner = intval(trim($_REQUEST['owner'])); } if ($dictionary['info']) { $info = $dictionary['info']; } else { $info = trim($_REQUEST['info']); } if (!$priority) $priority=5; - $enum_id=array('number' => $number, + $enum_id = array('number' => $number, 'tld' => $tld); if ($dictionary['mapto']) { $mapto = $dictionary['mapto']; } else { $mapto = trim($_REQUEST['mapto']); } if ($dictionary['type']) { $type = $dictionary['type']; } else { $type = trim($_REQUEST['type']); } - if (preg_match("/^([a-z0-9]+:\/\/)(.*)$/i",$mapto,$m)) { + if (preg_match("/^([a-z0-9]+:\/\/)(.*)$/i", $mapto, $m)) { $_scheme = $m[1]; $_value = $m[2]; - } else if (preg_match("/^([a-z0-9]+:)(.*)$/i",$mapto,$m)) { + } elseif (preg_match("/^([a-z0-9]+:)(.*)$/i", $mapto, $m)) { $_scheme = $m[1]; $_value = $m[2]; } else { $_scheme = ''; $_value = $mapto; } if (!$_value) { - $lastNumber=$this->getLastNumber(); + $lastNumber = $this->getLastNumber(); foreach($lastNumber['mappings'] as $_mapping) { if ($_mapping->type == trim($type)) { - if (preg_match("/^(.*)@(.*)$/",$_mapping->mapto,$m)) { + if (preg_match("/^(.*)@(.*)$/", $_mapping->mapto, $m)) { $_value = $number.'@'.$m[2]; break; } } } } - if (!$_scheme || !in_array($_scheme,$this->NAPTR_services[trim($type)]['schemas'])) { - $_scheme=$this->NAPTR_services[trim($type)]['schemas'][0]; + if (!$_scheme || !in_array($_scheme, $this->NAPTR_services[trim($type)]['schemas'])) { + $_scheme = $this->NAPTR_services[trim($type)]['schemas'][0]; } - $mapto=$_scheme.$_value; + $mapto = $_scheme.$_value; - $enum_number=array('id' => $enum_id, + $enum_number = array('id' => $enum_id, 'owner' => $owner, 'info' => $info, 'mappings' => array(array('type' => $type, 'mapto' => $mapto, 'ttl' => $ttl, 'priority' => $priority ) ) ); - if (!$this->skipSaveProperties=true) { + if (!$this->skipSaveProperties = true) { - $_p=array( + $_p = array( array('name' => 'enum_numbers_last_range', 'category' => 'web', 'value' => $_REQUEST['range'], 'permission' => 'customer' ), array('name' => 'enum_numbers_last_type', 'category' => 'web', 'value' => "$type", 'permission' => 'customer' ), array('name' => 'enum_numbers_last_number', 'category' => 'web', 'value' => "$number", 'permission' => 'customer' ), array('name' => 'enum_numbers_last_ttl', 'category' => 'web', 'value' => "$ttl", 'permission' => 'customer' ) ); $this->setCustomerProperties($_p); } $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('getNumber'); $result = $this->SoapEngine->soapclient->getNumber($enum_id); if ((new PEAR)->isError($result)) { - $error_msg=$result->getMessage(); - $error_fault=$result->getFault(); - $error_code=$result->getCode(); + $error_msg = $result->getMessage(); + $error_fault = $result->getFault(); + $error_code = $result->getCode(); if ($error_fault->detail->exception->errorcode == "3002") { - - $function=array('commit' => array('name' => 'addNumber', + $function = array('commit' => array('name' => 'addNumber', 'parameters' => array($enum_number), - 'logs' => array('success' => sprintf('ENUM number +%s under %s has been added',$number,$tld))) + 'logs' => array('success' => sprintf('ENUM number +%s under %s has been added',$number, $tld))) ); - $result = $this->SoapEngine->execute($function,$this->html); + $result = $this->SoapEngine->execute($function, $this->html); if ($this->checkLogSoapError($result, true)) { return false; } else { return true; } } else { - $log=sprintf("SOAP request error from %s: %s (%s): %s",$this->SoapEngine->SOAPurl,$error_msg, $error_fault->detail->exception->errorcode,$error_fault->detail->exception->errorstring); + $log = sprintf("SOAP request error from %s: %s (%s): %s", $this->SoapEngine->SOAPurl, $error_msg, $error_fault->detail->exception->errorcode, $error_fault->detail->exception->errorstring); syslog(LOG_NOTICE, $log); return false; } } else { // the number exists and we make an update - $result_new=$result; + $result_new = $result; foreach ($result->mappings as $_mapping) { - $mappings_new[]=array('type' => $_mapping->type, + $mappings_new[] = array('type' => $_mapping->type, 'mapto' => $_mapping->mapto, 'ttl' => $_mapping->ttl, 'priority' => $_mapping->priority, 'id' => $_mapping->id ); if ($_mapping->mapto == $mapto) { - printf ("

Info: ENUM mapping %s for number %s already exists",$mapto,$number); + printf("

Info: ENUM mapping %s for number %s already exists", $mapto, $number); return $result; } } - $mappings_new[]=array('type' => trim($type), + $mappings_new[] = array('type' => trim($type), 'mapto' => $mapto, 'ttl' => intval(trim($_REQUEST['ttl'])), 'priority'=> intval(trim($_REQUEST['priority'])), ); // add mapping - $result_new->mappings=$mappings_new; + $result_new->mappings = $mappings_new; - $function=array('commit' => array('name' => 'updateNumber', + $function = array('commit' => array('name' => 'updateNumber', 'parameters' => array($result_new), - 'logs' => array('success' => sprintf('ENUM number +%s under %s has been updated',$number,$tld))) + 'logs' => array('success' => sprintf('ENUM number +%s under %s has been updated',$number, $tld))) ); - $result = $this->SoapEngine->execute($function,$this->html); + $result = $this->SoapEngine->execute($function, $this->html); if ($this->checkLogSoapError($result, true)) { return false; } else { return true; } } } function getRecordKeys() { // Filter - $filter=array('number' => $this->filters['number'], + $filter = array('number' => $this->filters['number'], 'tld' => $this->filters['tld'], 'type' => $this->filters['type'], 'mapto' => $this->filters['mapto'], 'owner' => intval($this->filters['owner']), 'customer' => intval($this->filters['customer']), 'reseller' => intval($this->filters['reseller']) ); // Range - $range=array('start' => 0, + $range = array('start' => 0, 'count' => 1000 ); // Order if (!$this->sorting['sortBy']) $this->sorting['sortBy'] = 'changeDate'; if (!$this->sorting['sortOrder']) $this->sorting['sortOrder'] = 'DESC'; $orderBy = array('attribute' => $this->sorting['sortBy'], 'direction' => $this->sorting['sortOrder'] ); // Compose query - $Query=array('filter' => $filter, + $Query = array('filter' => $filter, 'orderBy' => $orderBy, 'range' => $range ); // Insert credetials $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('getNumberss'); // Call function $result = $this->SoapEngine->soapclient->getNumbers($Query); if ($this->checkLogSoapError($result, true)) { return false; } else { foreach ($result->numbers as $number) { - $this->selectionKeys[]=array('number' => $number->id->number, + $this->selectionKeys[] = array('number' => $number->id->number, 'tld' => $number->id->tld); } return true; } } - function showRecord($number) { - + function showRecord($number) + { print ""; print ""; print ""; print ""; print ""; print " +"; - print ""; - - print " + print <<< END + + + + + +
"; print "

Number

"; print "
"; print "

Mappings

"; print "
"; print ""; - printf ("",$_SERVER['PHP_SELF']); + printf("", $_SERVER['PHP_SELF']); print ""; - printf ("", - $this->tel2enum($number->id->number,$number->id->tld)); + printf("", + $this->tel2enum($number->id->number, $number->id->tld)); foreach (array_keys($this->Fields) as $item) { if ($this->Fields[$item]['name']) { - $item_name=$this->Fields[$item]['name']; + $item_name = $this->Fields[$item]['name']; } else { - $item_name=ucfirst($item); + $item_name = ucfirst($item); } if ($this->Fields[$item]['type'] == 'text') { - printf (" - - - ", - $item_name, - $item, - $number->$item + printf( + " + + + + + ", + $item_name, + $item, + $number->$item ); } else { - printf (" - - - ", - $item_name, - $item, - $number->$item + printf( + " + + + + + ", + $item_name, + $item, + $number->$item ); } } - printf ("",$number->id->tld); - printf ("",$number->id->number); + printf("", $number->id->tld); + printf("", $number->id->number); $this->printFiltersToForm(); $this->printHiddenFormElements(); - print " -
DNS name%s
DNS name%s
%s
%s
%s
%s
- "; - - print "
"; - - print ""; - print ""; - print ""; - print ""; - print ""; - print ""; - print ""; - print ""; - + print <<< END +
IdTypeMap toTTL
+
+ + + + + + + + +END; foreach ($number->mappings as $_mapping) { $j++; unset($selected_type); print ""; print ""; - printf ("",$_mapping->id,$_mapping->id); + printf("", $_mapping->id, $_mapping->id); $selected_type[$_mapping->type]='selected'; - printf (" + printf(" "; - printf (" - - - ", - $_mapping->mapto, - $_mapping->ttl + printf( + " + + + ", + $_mapping->mapto, + $_mapping->ttl ); print ""; } $j++; - print ""; - print ""; - print ""; - printf (" - + + + "; - - printf (" - - - " - ); - - print ""; - - print "
IdTypeMap toTTL
$j%d%d
+ -
"; - - print "
+ + - - - + + + - "; - print ""; - print ""; - + + +END; } - function getRecord($enumid) { - + function getRecord($enumid) + { $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('getNumber'); $result = $this->SoapEngine->soapclient->getNumber($enumid); if ($this->checkLogSoapError($result, true)) { return false; } else { return $result; } } - function updateRecord () { + function updateRecord() + { //print "

Updating number ..."; if (!$_REQUEST['number_filter'] || !$_REQUEST['tld_filter']) return; - $enumid=array('number' => $_REQUEST['number_filter'], + $enumid = array('number' => $_REQUEST['number_filter'], 'tld' => $_REQUEST['tld_filter'] ); if (!$number = $this->getRecord($enumid)) { return false; } - $number_old=$number; + $number_old = $number; - $new_mappings=array(); + $new_mappings = array(); /* foreach ($number->mappings as $_mapping) { foreach (array_keys($this->mapping_fields) as $field) { if ($this->mapping_fields[$field] == 'integer') { - $new_mapping[$field]=intval($_mapping->$field); + $new_mapping[$field] = intval($_mapping->$field); } else { - $new_mapping[$field]=$_mapping->$field; + $new_mapping[$field] = $_mapping->$field; } } - $new_mappings[]=$new_mapping; + $new_mappings[] = $new_mapping; } */ $j=0; while ($j< count($_REQUEST['mapping_type'])) { $mapto = $_REQUEST['mapping_mapto'][$j]; $type = $_REQUEST['mapping_type'][$j]; $id = $_REQUEST['mapping_id'][$j]; $ttl = intval($_REQUEST['mapping_ttl'][$j]); $priority = intval($_REQUEST['mapping_priority'][$j]); if (!$ttl) $ttl = $this->default_ttl; if (!$priority) $priority = $this->default_priority; if (strlen($mapto)) { - if (preg_match("/^([a-z0-9]+:\/\/)(.*)$/i",$mapto,$m)) { + if (preg_match("/^([a-z0-9]+:\/\/)(.*)$/i", $mapto, $m)) { $_scheme = $m[1]; $_value = $m[2]; - } else if (preg_match("/^([a-z0-9]+:)(.*)$/i",$mapto,$m)) { + } elseif (preg_match("/^([a-z0-9]+:)(.*)$/i", $mapto, $m)) { $_scheme = $m[1]; $_value = $m[2]; } else { $_scheme = ''; $_value = $mapto; } reset($this->NAPTR_services); - if (!$_scheme || !in_array($_scheme,$this->NAPTR_services[trim($type)]['schemas'])) { - $_scheme=$this->NAPTR_services[trim($type)]['schemas'][0]; + if (!$_scheme || !in_array($_scheme, $this->NAPTR_services[trim($type)]['schemas'])) { + $_scheme = $this->NAPTR_services[trim($type)]['schemas'][0]; } - $mapto=$_scheme.$_value; - - $new_mappings[]=array( 'type' => $type, + $mapto = $_scheme.$_value; + $new_mappings[] = array( 'type' => $type, 'ttl' => $ttl, 'id' => intval($id), 'mapto' => $mapto, 'priority' => $priority ); } $j++; } - $number->mappings=$new_mappings; + $number->mappings = $new_mappings; - if (!is_array($number->mappings)) $number->mappings=array(); + if (!is_array($number->mappings)) $number->mappings = array(); foreach (array_keys($this->Fields) as $item) { - $var_name=$item.'_form'; - //printf ("
%s=%s",$var_name,$_REQUEST[$var_name]); + $var_name = $item.'_form'; + //printf("
%s=%s", $var_name, $_REQUEST[$var_name]); if ($this->Fields[$item]['type'] == 'integer') { $number->$item = intval($_REQUEST[$var_name]); } else { $number->$item = trim($_REQUEST[$var_name]); } } //print_r($number); - $function=array('commit' => array('name' => 'updateNumber', + $function = array('commit' => array('name' => 'updateNumber', 'parameters' => array($number), - 'logs' => array('success' => sprintf('ENUM number +%s under %s has been updated',$enumid['number'],$enumid['tld']))) + 'logs' => array('success' => sprintf('ENUM number +%s under %s has been updated',$enumid['number'], $enumid['tld']))) ); - $result = $this->SoapEngine->execute($function,$this->html); + $result = $this->SoapEngine->execute($function, $this->html); dprint_r($result) ; if ($this->checkLogSoapError($result, true)) { return false; } else { return true; } } - function showTextBeforeCustomerSelection() { + function showTextBeforeCustomerSelection() + { print _("Range owner"); } } diff --git a/library/NGNPro/Records/SipAccounts.php b/library/NGNPro/Records/SipAccounts.php index 4ca1009..01d543d 100644 --- a/library/NGNPro/Records/SipAccounts.php +++ b/library/NGNPro/Records/SipAccounts.php @@ -1,1269 +1,1269 @@ 'Change date', 'username' => 'Username', 'domain' => 'Domain' ); var $store_clear_text_passwords = true; var $default_account_type = 'postpaid'; var $group_filter_list = array( 'blocked' => 'Blocked', 'quota' => 'Quota Exceeded', 'prepaid' => 'Prepaid', 'free-pstn' => 'PSTN Access', 'anonymous' => 'Anonymous', 'anonymous-reject' => 'Reject Anonymous', 'voicemail' => 'Has Voicemail', 'missed-calls' => 'Missed Calls', 'trunking' => 'Trunking' ); public function __construct($SoapEngine) { dprint("init SipAccounts"); $this->filters = array( 'username' => strtolower(trim($_REQUEST['username_filter'])), 'domain' => strtolower(trim($_REQUEST['domain_filter'])), 'firstname'=> trim($_REQUEST['firstname_filter']), 'lastname' => trim($_REQUEST['lastname_filter']), 'email' => htmlspecialchars(trim($_REQUEST['email_filter'])), 'owner' => trim($_REQUEST['owner_filter']), 'customer' => trim($_REQUEST['customer_filter']), 'reseller' => trim($_REQUEST['reseller_filter']), 'group' => trim($_REQUEST['group_filter']) ); parent::__construct($SoapEngine); if (strlen($this->SoapEngine->call_limit)) { $this->platform_call_limit = $this->SoapEngine->call_limit; } else { $this->platform_call_limit; } $this->getTimezones(); } function getRecordKeys() { if (preg_match("/^(.*)@(.*)$/", $this->filters['username'], $m)) { $this->filters['username'] = $m[1]; $this->filters['domain'] = $m[2]; } // Filter $filter = array( 'username' => $this->filters['username'], 'domain' => $this->filters['domain'], 'firstName'=> $this->filters['firstname'], 'lastName' => $this->filters['lastname'], 'email' => $this->filters['email'], 'owner' => intval($this->filters['owner']), 'customer' => intval($this->filters['customer']), 'reseller' => intval($this->filters['reseller']), 'groups' => array($this->filters['group']) ); // Range $range = array( 'start' => 0, 'count' => 500 ); // Order if (!$this->sorting['sortBy']) $this->sorting['sortBy'] = 'changeDate'; if (!$this->sorting['sortOrder']) $this->sorting['sortOrder'] = 'DESC'; $orderBy = array( 'attribute' => $this->sorting['sortBy'], 'direction' => $this->sorting['sortOrder'] ); // Compose query $Query = array( 'filter' => $filter, 'orderBy' => $orderBy, 'range' => $range ); // Insert credetials $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('getAccounts'); // Call function $result = $this->SoapEngine->soapclient->getAccounts($Query); if ($this->checkLogSoapError($result, true)) { return false; } else { foreach ($result->accounts as $account) { $this->selectionKeys[] = array( 'username' => $account->id->username, 'domain' => $account->id->domain ); } return true; } return false; } function listRecords() { $this->getAllowedDomains(); if (preg_match("/^(.*)@(.*)$/", $this->filters['username'], $m)) { $this->filters['username'] = $m[1]; $this->filters['domain'] = $m[2]; } $this->showSeachForm(); // Filter $filter = array( 'username' => $this->filters['username'], 'domain' => $this->filters['domain'], 'firstName'=> $this->filters['firstname'], 'lastName' => $this->filters['lastname'], 'email' => $this->filters['email'], 'owner' => intval($this->filters['owner']), 'customer' => intval($this->filters['customer']), 'reseller' => intval($this->filters['reseller']), 'groups' => array($this->filters['group']) ); $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : ''; // Range $range = array( 'start' => intval($this->next), 'count' => intval($this->maxrowsperpage) ); // Order if (!$this->sorting['sortBy']) $this->sorting['sortBy'] = 'changeDate'; if (!$this->sorting['sortOrder']) $this->sorting['sortOrder'] = 'DESC'; $orderBy = array( 'attribute' => $this->sorting['sortBy'], 'direction' => $this->sorting['sortOrder'] ); // Compose query $Query = array( 'filter' => $filter, 'orderBy' => $orderBy, 'range' => $range ); // Insert credentials $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('getAccounts'); // Call function $result = $this->SoapEngine->soapclient->getAccounts($Query); if ($this->checkLogSoapError($result, true)) { return false; } else { $this->rows = $result->total; if ($this->rows && $action != 'PerformActions' && $action != 'Delete') { $this->showActionsForm(); } print "

$this->rows records found

"; if (!$this->next) $this->next=0; if ($this->rows > $this->maxrowsperpage) { $maxrows = $this->maxrowsperpage + $this->next; if ($maxrows > $this->rows) $maxrows = $this->maxrowsperpage; } else { $maxrows = $this->rows; } if ($this->rows) { $i=0; $_prepaid_accounts = array(); while ($i < $maxrows) { if (!$result->accounts[$i]) break; $account = $result->accounts[$i]; if ($account->prepaid) { $_prepaid_accounts[] = array( "username" => $account->id->username, "domain" => $account->id->domain ); } $i++; } if (count($_prepaid_accounts)) { // Insert credetials $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('getPrepaidStatus'); // Call function $result1 = $this->SoapEngine->soapclient->getPrepaidStatus($_prepaid_accounts); if (!(new PEAR)->isError($result1)) { $j=0; foreach ($result1 as $_account) { $_sip_account = sprintf( "%s@%s", $_prepaid_accounts[$j]['username'], $_prepaid_accounts[$j]['domain'] ); $_prepaid_balance[$_sip_account] = $_account->balance; $j++; } } } $i=0; while ($i < $maxrows) { if (!$result->accounts[$i]) break; $account = $result->accounts[$i]; $index = $this->next+$i+1; $deleteUrl = array( 'service' => $this->SoapEngine->service, 'action' => 'Delete', 'key' => $account->id->username ); if (!$this->filters['domain']) { $deleteUrl['domain_filter'] = $account->id->domain; } if (!$this->filters['username']) { $deleteUrl['username_filter'] = $account->id->username; } if ($action == 'Delete' && $_REQUEST['key'] == $account->id->username && $_REQUEST['domain_filter'] == $account->id->domain) { $deleteUrl['confirm'] = 1; $actionText = "Confirm"; } else { $actionText = "Delete"; } if ($account->reseller) { $reseller_sip_settings_page = $account->reseller; - } else if ($this->SoapEngine->impersonate) { + } elseif ($this->SoapEngine->impersonate) { // use the reseller from the soap engine $reseller_sip_settings_page = $this->SoapEngine->impersonate; } else { // use the reseller from the login $reseller_sip_settings_page = $this->reseller; } if ($this->sip_settings_page) { $settingsUrl = array( 'account' => sprintf('%s@%s', $account->id->username, $account->id->domain), 'sip_engine' => $this->SoapEngine->sip_engine ); if ($this->adminonly) { $settingsUrl['reseller'] = $reseller_sip_settings_page; $settingsUrl['adminonly'] = $this->adminonly; } else { if ($account->reseller == $this->reseller) $settingsUrl['reseller'] = $reseller_sip_settings_page; } foreach (array_keys($this->SoapEngine->extraFormElements) as $element) { if (!strlen($this->SoapEngine->extraFormElements[$element])) continue; $settingsUrl[$element] = $this->SoapEngine->extraFormElements[$element]; } $sip_account = sprintf( " %s@%s", $this->sip_settings_page, http_build_query($settingsUrl), $account->id->username, $account->id->domain ); } else { $sip_account = sprintf("%s@%s", $account->id->username, $account->id->domain); } /* $_customer_url = $this->url.sprintf("&service=customers@%s&customer_filter=%s", urlencode($this->SoapEngine->customer_engine), urlencode($account->customer)); */ if ($account->owner) { $ownersUrlData = array( 'service' => sprintf('customers@%s', $this->SoapEngine->soapEngine), 'customer_filter' => $account->owner ); $_owner_url = sprintf( '%s', $this->url, http_build_query($ownersUrlData), $account->owner ); } else { $_owner_url=''; } $prepaid_account = sprintf("%s@%s", $account->id->username, $account->id->domain); if ($account->callLimit) { $callLimit = $account->callLimit; } elseif ($this->platform_call_limit) { $callLimit = $this->platform_call_limit; } else { $callLimit = ''; } printf( ' ', $index, $sip_account, $account->firstName, $account->lastName, $account->email, $account->email, $account->timezone, $callLimit, $account->quota, $_prepaid_balance[$prepaid_account], $_owner_url, $account->changeDate, $this->url.'&'.$this->addFiltersToURL().'&'.http_build_query($deleteUrl), $actionText ); $i++; } } print "
Id SIP account"; $this->showSortCaret('username'); if ($this->sorting['sortBy'] == 'domain') { print " (domain "; $this->showSortCaret('domain'); print ")"; } print " Full name Email address Timezone Capacity Quota Balance Owner Change date"; $this->showSortCaret('changeDate'); print " Actions
%s %s %s %s %s %s %s %s %s %s %s %s
"; $this->showPagination($maxrows); return true; } } function showSeachFormCustom() { printf( "

Account
", $this->filters['username'] ); print "@"; if (count($this->allowedDomains) > 0) { if ($this->filters['domain'] && !in_array($this->filters['domain'], $this->allowedDomains)) { printf("", $this->filters['domain']); } else { $selected_domain[$this->filters['domain']]='selected'; printf("\n"); } } else { printf("", $this->filters['domain']); } printf("
FN
\n", $this->filters['firstname']); printf("
LN
\n", $this->filters['lastname']); printf("
Email
\n", $this->filters['email']); printf("
Owner
\n", $this->filters['owner']); $selected_group[$this->filters['group']] = 'selected'; print ""; } function deleteRecord($dictionary = array()) { if (!$dictionary['confirm'] && !$_REQUEST['confirm']) { print "

Please press on Confirm to confirm the delete. "; return true; } if ($dictionary['username']) { $username = $dictionary['username']; } else { $username = $_REQUEST['key']; } if ($dictionary['domain']) { $domain = $dictionary['domain']; } else { $domain = $this->filters['domain']; } if (!strlen($username) || !strlen($domain)) { print "

Error: missing SIP account username or domain. "; return false; } $account = array( 'username' => $username, 'domain' => $domain ); $function = array( 'commit' => array( 'name' => 'deleteAccount', 'parameters' => array($account), 'logs' => array('success' => sprintf('SIP account %s@%s has been deleted',$_REQUEST['key'], $this->filters['domain']) ) ) ); foreach (array_keys($this->filters) as $_filter) { if ($_filter == 'username' || $_filter == 'domain') continue; $new_filters[$_filter] = $this->filters[$_filter]; } $this->filters = $new_filters; return $this->SoapEngine->execute($function, $this->html); } function showAddForm() { if ($this->filters['username']) return; if (!count($this->allowedDomains)) { print "

You must create at least one SIP domain before adding SIP accounts
"; return false; } printf("
", $_SERVER['PHP_SELF']); print "
"; print " "; if ($_REQUEST['account']) { $_account = $_REQUEST['account']; } else { $_account = $this->getCustomerProperty('sip_accounts_last_username'); } printf("
Account
",$_account); if ($_REQUEST['domain']) { $_domain = $_REQUEST['domain']; $selected_domain[$_REQUEST['domain']]='selected'; } else if ($this->filters['domain']) { $_domain = $this->filters['domain']; $selected_domain[$this->filters['domain']]='selected'; } else if ($_domain = $this->getCustomerProperty('sip_accounts_last_domain')) { $selected_domain[$_domain]='selected'; } if (count($this->allowedDomains) > 0) { print "@"; } else { printf("", $_domain); } if ($_REQUEST['quota']) { $_quota = $_REQUEST['quota']; } else { $_quota = $this->getCustomerProperty('sip_accounts_last_quota'); } if (!$_quota) $_quota=''; if ($_prepaid = $this->getCustomerProperty('sip_accounts_last_prepaid')) { $checked_prepaid='checked'; } else { $checked_prepaid=''; } if ($_pstn = $this->getCustomerProperty('sip_accounts_last_pstn')) { $checked_pstn='checked'; } else { $checked_pstn=''; } printf("
Password
",$_REQUEST['password']); printf("
Name
",$_REQUEST['fullname']); printf("
Email
",$_REQUEST['email']); printf("
Owner
",$_REQUEST['owner']); if ($this->getResellerProperty('pstn_access')) { printf(" PSTN ", $checked_pstn); printf("
Quota
",$_quota); if ($this->prepaidChangesAllowed()) { printf(" Prepaid ",$checked_prepaid); } else { printf(" Prepaid "); } } $this->printHiddenFormElements(); print "
"; } function addRecord($dictionary = array()) { dprint_r($dictionary); if ($dictionary['account']) { $account_els = explode("@", $dictionary['account']); $this->skipSaveProperties = true; } else { $account_els = explode("@", trim($_REQUEST['account'])); } list($customer, $reseller) = $this->customerFromLogin($dictionary); $username = $account_els[0]; if (strlen($account_els[1])) { $domain = $account_els[1]; } else if ($dictionary['domain']) { $domain = $dictionary['domain']; } else if ($_REQUEST['domain']) { $domain = trim($_REQUEST['domain']); } else { printf("

Error: Missing SIP domain"); return false; } if (!$this->validDomain($domain)) { print "Error: invalid domain name"; return false; } if ($dictionary['fullname']) { $name_els = explode(" ", $dictionary['fullname']); } else { $name_els = explode(" ", trim($_REQUEST['fullname'])); } if (strlen($name_els[0])) { $firstName = $name_els[0]; } else { $firstName='Account'; } if (strlen($name_els[1])) { $j=1; while ($j < count($name_els)) { $lastName .= $name_els[$j].' '; $j++; } } else { if ($username=="") { $lastName="Unknown"; } else { $lastName = $username; } } $lastName = trim($lastName); if (strlen($dictionary['timezone'])) { $timezone = $dictionary['timezone']; } elseif (strlen(trim($_REQUEST['timezone']))) { $timezone = trim($_REQUEST['timezone']); } elseif ($this->SoapEngine->default_timezone) { $timezone = $this->SoapEngine->default_timezone; } else { $timezone='Europe/Amsterdam'; } if (!in_array($timezone, $this->timezones)) { $timezone='Europe/Amsterdam'; } if (strlen($dictionary['password'])) { $password = $dictionary['password']; } elseif (strlen(trim($_REQUEST['password']))) { $password = trim($_REQUEST['password']); } else { $password = $this->RandomString(10); } if (is_array($dictionary['groups'])) { $groups = $dictionary['groups']; } else { $groups = array(); } if (is_array($dictionary['ip_access_list'])) { $ip_access_list = $dictionary['ip_access_list']; } else { $ip_access_list = array(); } if (strlen($dictionary['call_limit'])) { $call_limit = $dictionary['call_limit']; } else { $call_limit = $_REQUEST['call_limit']; } if ($dictionary['pstn'] || $_REQUEST['pstn']) { $_pstn=1; $groups[]='free-pstn'; } else { $_pstn=0; } if (strlen($dictionary['email'])) { $email = $dictionary['email']; } else { $email = trim($_REQUEST['email']); } if (strlen($dictionary['rpid'])) { $rpid = $dictionary['rpid']; } else { $rpid = trim($_REQUEST['rpid']); } if (strlen($dictionary['owner'])) { $owner = intval($dictionary['owner']); } else { $owner = intval($_REQUEST['owner']); } if (!$owner) { $owner = intval($customer); } if (strlen($dictionary['quota'])) { $quota = intval($dictionary['quota']); } else { $quota = intval($_REQUEST['quota']); } if ($this->prepaidChangesAllowed()) { if (strlen($dictionary['prepaid'])) { $prepaid = intval($dictionary['prepaid']); } else { $prepaid = intval($_REQUEST['prepaid']); } } else { $prepaid = 1; } if ($prepaid) { $groups[]='prepaid'; } if (!$email) { if ($username=="") { $email='unknown@'.strtolower($domain); } else { $email = strtolower($username).'@'.strtolower($domain); } } if (!$this->skipSaveProperties) { $_p = array( array('name' => 'sip_accounts_last_domain', 'category' => 'web', 'value' => "$domain", 'permission' => 'customer' ), array('name' => 'sip_accounts_last_username', 'category' => 'web', 'value' => "$username", 'permission' => 'customer' ), array('name' => 'sip_accounts_last_timezone', 'category' => 'web', 'value' => "$timezone", 'permission' => 'customer' ), array('name' => 'sip_accounts_last_quota', 'category' => 'web', 'value' => "$quota", 'permission' => 'customer' ), array('name' => 'sip_accounts_last_pstn', 'category' => 'web', 'value' => "$_pstn", 'permission' => 'customer' ), array('name' => 'sip_accounts_last_prepaid', 'category' => 'web', 'value' => "$prepaid", 'permission' => 'customer' ) ); $this->setCustomerProperties($_p); } if (is_array($dictionary['properties'])) { $properties = $dictionary['properties']; } else { $properties = array(); } if ($this->SoapEngine->login_credentials['reseller']) { $reseller_properties = $this->getResellerProperties($this->SoapEngine->login_credentials['reseller'],'store_clear_text_passwords'); if (strlen($reseller_properties['store_clear_text_passwords'])) { $this->store_clear_text_passwords = $reseller_properties['store_clear_text_passwords']; } } else { $_reseller = $this->getResellerForDomain(strtolower($domain)); if ($_reseller) { $reseller_properties = $this->getResellerProperties($_reseller, 'store_clear_text_passwords'); if (strlen($reseller_properties['store_clear_text_passwords'])) { $this->store_clear_text_passwords = $reseller_properties['store_clear_text_passwords']; } } } if ($this->store_clear_text_passwords || $username == '') { $password_final = $password; } else { $md1=strtolower($username).':'.strtolower($domain).':'.$password; $md2=strtolower($username).'@'.strtolower($domain).':'.strtolower($domain).':'.$password; $password_final = md5($md1).':'.md5($md2); } $account = array( 'id' => array('username' => strtolower($username), 'domain' => strtolower($domain) ), 'firstName' => $firstName, 'lastName' => $lastName, 'password' => $password_final, 'timezone' => $timezone, 'email' => strtolower($email), 'owner' => $owner, 'rpid' => $rpid, 'groups' => $groups, 'prepaid' => $prepaid, 'quota' => $quota, 'acl' => $ip_access_list, 'properties' => $properties ); if (isset($call_limit)) { $account['callLimit'] = intval($call_limit); } //print_r($account); $deleteAccount = array('username' => $username, 'domain' => $domain); if ($this->html) { if ($username == '') { $success_log = sprintf('SIP account has been generated in domain %s', $domain); } else { $success_log = sprintf('SIP account %s@%s has been added', $username, $domain); } } $function = array('commit' => array('name' => 'addAccount', 'parameters' => array($account), 'logs' => array('success' => $success_log)) ); return $this->SoapEngine->execute($function, $this->html); } function getAllowedDomains() { // Filter $filter = array( 'domain' => '' ); // Range $range = array( 'start' => 0, 'count' => 750 ); $orderBy = array( 'attribute' => 'domain', 'direction' => 'ASC' ); // Compose query $Query = array( 'filter' => $filter, 'orderBy' => $orderBy, 'range' => $range ); $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('getDomains'); $result = $this->SoapEngine->soapclient->getDomains($Query); if ((new PEAR)->isError($result)) { $error_msg = $result->getMessage(); $error_fault= $result->getFault(); $error_code = $result->getCode(); printf( "

Error in getAllowedDomains from %s: %s (%s): %s", $this->SoapEngine->SOAPurl, $error_msg, $error_fault->detail->exception->errorcode, $error_fault->detail->exception->errorstring ); //return false; } else { foreach ($result->domains as $_domain) { if ($this->validDomain($_domain->domain)) { $this->allowedDomains[] = $_domain->domain; } } } } function showPasswordReminderForm($accounts = array()) { print "

"; print _("Login account reminder"); print "

"; print _("

Fill in the e-mail address used during the registration of the SIP account:

"); printf( ""; if (count($accounts) > 1 || $_REQUEST['sip_filter']) { print "

"; print _("Warning"); print " "; print _("More than one account uses this email address. If you wish to receive the password for a particular account fill in the SIP account below, default it has been send it to the first 5 accounts found"); print "
"; printf( "", htmlspecialchars($_REQUEST['sip_filter']) ); } print "
"; } function showPasswordReminderUpdateFormEncrypted($id, $account) { if ($account) { print "

"; print _("Update passwords"); print ""; print " (for "; print $account; print ")

"; print _("

Please choose new passwords for your account, if you leave them empty no change will be performed

"); print "
"; print "
"; print "
"; print ""; print "
"; print ""; print ""; print "
"; print "
"; print ""; print "
"; print ""; print ""; print "
"; print "
"; print "
"; } } function showPasswordReminderFormEncrypted($accounts = array()) { print "

"; print _("Sip Account Reminder/Password Reset"); print "

"; //print _("

Please fill in the SIP account and e-mail address used during the registration of the SIP account to receive a login reminder and a possiblity to reset your passwords.

"); if (count($accounts) < 1 && $_REQUEST['sip_filter'] && $_REQUEST['email_filter']) { print "
"; print _("Error"); print "
"; print _("The email adress does not match email address in the SIP account, or the SIP account does not exist."); print "
"; print _("An email has not been sent."); print "
"; } elseif (count($accounts) < 1 && $_REQUEST['email_filter']) { print "
"; print _("Error"); print ": "; print _("The email adress does not match the email address in any SIP account."); print "
"; print _("An email has not been sent."); print "
"; } print " "; print ""; print ""; print "
"; if (count($accounts) < 1 && $_REQUEST['sip_filter']) { print ""; } } function getAccountsForPasswordReminderEncrypted($maximum_accounts = 5) { $accounts = array(); //$filter = array('email' => $this->filters['email']); if ($_REQUEST['sip_filter']) { list($username, $domain) = explode('@', trim($_REQUEST['sip_filter'])); if ($username && $domain) { $filter = array( 'username' => $username, 'domain' => $domain, 'email' => $this->filters['email'] ); } } else { $filter = array('email' => $this->filters['email']); } $range = array( 'start' => 0, 'count' => $maximum_accounts ); $orderBy = array( 'attribute' => 'changeDate', 'direction' => 'DESC' ); $Query = array( 'filter' => $filter, 'orderBy' => $orderBy, 'range' => $range ); $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('getAccounts'); $result = $this->SoapEngine->soapclient->getAccounts($Query); if (!$this->checkLogSoapError($result, true)) { $i = 0; while ($i < $result->total) { if (!$result->accounts[$i]) break; $account = $result->accounts[$i]; $accounts[] = array('username'=> $account->id->username, 'domain' => $account->id->domain ); $i++; } } return $accounts; } function getAccountsForPasswordReminder($maximum_accounts = 5) { $accounts = array(); $filter = array('email' => $this->filters['email']); if ($_REQUEST['sip_filter']) { list($username, $domain) = explode('@', trim($_REQUEST['sip_filter'])); if ($username && $domain) { $filter = array( 'username' => $username, 'domain' => $domain ); } } $range = array('start' => 0, 'count' => $maximum_accounts); $orderBy = array('attribute' => 'changeDate', 'direction' => 'DESC'); $Query = array('filter' => $filter, 'orderBy' => $orderBy, 'range' => $range); $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('getAccounts'); $result = $this->SoapEngine->soapclient->getAccounts($Query); if (!$this->checkLogSoapError($result, true)) { $i=0; while ($i < $result->total) { if (!$result->accounts[$i]) break; $account = $result->accounts[$i]; $accounts[] = array( 'username'=> $account->id->username, 'domain' => $account->id->domain ); $i++; } } return $accounts; } function getResellerForDomain($domain='') { // Filter $filter = array( 'domain' => $domain ); // Range $range = array('start' => 0, 'count' => 1 ); $orderBy = array('attribute' => 'changeDate', 'direction' => 'DESC' ); // Compose query $Query = array('filter' => $filter, 'orderBy' => $orderBy, 'range' => $range ); // Insert credetials $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('getDomains'); // Call function $result = $this->SoapEngine->soapclient->getDomains($Query); if ($this->checkLogSoapError($result, true)) { return false; } else { if ($result->domains[0]) { return $result->domains[0]->reseller; } else { return false; } } } function getResellerProperties($reseller = '', $property = '') { $properties = array(); if (!$this->SoapEngine->customer_engine) { dprint("No customer_engine available"); return true; } if (!$reseller) { dprint("No customer provided"); return true; } if (!$property) { dprint("No property provided"); return true; } $this->SoapEngine->soapclientCustomers->addHeader($this->SoapEngine->SoapAuthCustomers); $result = $this->SoapEngine->soapclientCustomers->getProperties(intval($reseller)); dprint_r($result); if ($this->checkLogSoapError($result, true)) { return false; } foreach ($result as $_property) { $properties[$_property->name] = $_property->value; } return $properties; } function pstnChangesAllowed() { //dprint_r($this->loginProperties); $_customer_pstn_changes = $this->getCustomerProperty('pstn_changes'); $_reseller_pstn_changes = $this->getCustomerProperty('pstn_changes'); if ($this->adminonly) { return true; } elseif ($this->customer == $this->reseller && $_reseller_pstn_changes) { return true; } elseif ($this->loginImpersonate == $this->reseller && $_reseller_pstn_changes) { return true; } elseif ($_reseller_pstn_changes && $_customer_pstn_changes) { return true; } return false; } function prepaidChangesAllowed() { //dprint_r($this->loginProperties); $_customer_prepaid_changes = $this->getCustomerProperty('prepaid_changes'); $_reseller_prepaid_changes = $this->getCustomerProperty('prepaid_changes'); if ($this->adminonly) { return true; } elseif ($this->customer == $this->reseller && $_reseller_prepaid_changes) { return true; } elseif ($this->loginImpersonate == $this->reseller && $_reseller_prepaid_changes) { return true; } elseif ($_reseller_prepaid_changes && $_customer_prepaid_changes) { return true; } return false; } function getTimezones() { $this->timezones = array(); if (!$fp = fopen("timezones", "r")) { print _("Failed to open timezone file."); return false; } while ($buffer = fgets($fp, 1024)) { $this->timezones[] = trim($buffer); } fclose($fp); } function showTextBeforeCustomerSelection() { print _("Domain owner"); } }